473,480 Members | 1,932 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

How to get value of dynamic control radio button after postback

2 New Member
Hi guys,

I am looking into create a dynamic survey as posted in Get User Input From Dynamic Controls but with some different environment
Below is what i am trying to do:
First when the user click the button, it will populate a dynamic table with radio button for the survey questionnaire
However, i was unable to get its value (for score calculation) after clicking the submit button
Beside i am using an ajax extension (updatePanel) for the development
I have been look into viewstate but i hv no idea with it.

Does anyone have any ideas?

Here i included some of my code:

part of code in page
Expand|Select|Wrap|Line Numbers
  1.  
  2.         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  3.             <ContentTemplate>
  4.                 <asp:Button ID="btnTest" runat="server" Text="Take Test" OnClick="btnTest_Click" Visible="False" />
  5.                 <asp:Label ID="lblTestErrMsg" runat="server" 
  6.  
  7.     ForeColor="Red"></asp:Label><br />
  8.                     <table id="tblTest" runat="server" style="width: 100%">
  9.                         <tr>
  10.                             <td>
  11.                              <asp:PlaceHolder ID="phQuestionnaire" runat="server"></asp:PlaceHolder>
  12.                                 <br />
  13.                                 </td>
  14.                         </tr>
  15.                         <tr>
  16.                             <td>
  17.                                 </td>
  18.                         </tr>
  19.                         <tr>
  20.                             <td>
  21.                                 <asp:Label ID="lblResult" runat="server"></asp:Label></td>
  22.                         </tr>
  23.                         <tr>
  24.                             <td>
  25.                             </td>
  26.                         </tr>
  27.                     </table>
  28.                 </ContentTemplate>
  29.             </asp:UpdatePanel>
  30.  
Populate Dynamic Table function
* v_dtTable and v_dtTable2 contains the data from database

Expand|Select|Wrap|Line Numbers
  1.    Private Sub CreateDynamicTable(ByVal v_dtTable As Data.DataTable, ByVal v_dtTable2 As Data.DataTable)
  2.         Me.phQuestionnaire.Controls.Clear()
  3.         Dim cols As Integer = v_dtTable.Rows.Count + 2
  4.         Dim rows As Integer = v_dtTable2.Rows.Count + 1
  5.         Dim mid As Integer = v_dtTable.Rows.Count / 2
  6.  
  7.         Dim tbl As Table = New Table()
  8.         tbl.ID = "tblQs"
  9.         tbl.BorderWidth = 1
  10.         tbl.CellPadding = 0
  11.         tbl.CellSpacing = 0
  12.         tbl.Width = 500
  13.         tbl.EnableViewState = True
  14.  
  15.         Me.phQuestionnaire.Controls.Add(tbl)
  16.         For i As Integer = 0 To rows - 1
  17.             Dim tr As TableRow = New TableRow()
  18.             Dim rowCnt As Integer = 1
  19.             Dim colCnt As Integer = 0
  20.  
  21.             For j As Integer = 0 To cols - 1
  22.                 Dim tc As TableCell = New TableCell()
  23.                 tc.BorderWidth = 1
  24.                 Dim lbl As Label = New Label()
  25.                 Dim bol As Boolean = False
  26.  
  27.                 If i = 0 Then       
  28.                     If j = 0 Then
  29.                         tc.Text = "No."
  30.  
  31.                     ElseIf j = 1 Then
  32.                         tc.Text = "Question"
  33.  
  34.                     Else
  35.                         tc.Text = v_dtTable.Rows(j - 2).Item("scoreName")
  36.                         tc.HorizontalAlign = HorizontalAlign.Center
  37.                     End If
  38.                     tc.BackColor = Drawing.Color.DeepSkyBlue
  39.                     tc.ForeColor = Drawing.Color.White
  40.                 Else
  41.                     If v_dtTable2.Rows(i - 1).Item("isHeader") Then
  42.                         bol = True
  43.                         tc.Text = v_dtTable2.Rows(i - 1).Item("TestQuestion")
  44.                         tc.Style("font-weight") = "bold"
  45.  
  46.                     ElseIf j = 0 Then
  47.                         tc.Text = rowCnt
  48.                         rowCnt += 1
  49.  
  50.                     ElseIf j = 1 Then
  51.                         tc.Text = v_dtTable2.Rows(i - 1).Item("TestQuestion")
  52.  
  53.                     Else
  54.                         Dim rBtn As RadioButton = New RadioButton
  55.                         rBtn.GroupName = "rBtn" & rowCnt
  56.                         rBtn.ID = "rBtn_" & rowCnt & "_" & colCnt
  57.                         rBtn.InputAttributes("value") = v_dtTable.Rows(j - 2).Item("scoreValue")
  58.                         colCnt += 1
  59.                         If j = mid + 2 Then
  60.                             rBtn.Checked = True
  61.                         End If
  62.  
  63.                         tc.Controls.Add(rBtn)
  64.                         tc.HorizontalAlign = HorizontalAlign.Center
  65.                     End If
  66.                 End If
  67.  
  68.                 If bol Then
  69.                     tc.ColumnSpan = cols - 1
  70.                     tr.Cells.Add(tc)
  71.                     Exit For
  72.                 Else
  73.                     tr.Cells.Add(tc)
  74.                 End If
  75.             Next j
  76.  
  77.             tbl.Rows.Add(tr)                              
  78.         Next i
  79.  
  80.     End Sub
  81.  
Calculate Score function
Expand|Select|Wrap|Line Numbers
  1.         Private Sub subCalculateScore()
  2.         Dim tblQs As Table = CType(Me.phQuestionnaire.FindControl("tblQs"), Table)
  3.         Dim rb As New RadioButton
  4.         Dim score As Integer = 0
  5.  
  6.         If Me.phQuestionnaire.FindControl("tblQs") Is Nothing Then
  7.         Else
  8.             For Each tr As TableRow In tblQs.Rows
  9.                 For Each tc As TableCell In tr.Cells
  10.                     For Each c As Control In tc.Controls
  11.                         If c.GetType.ToString = rb.GetType.ToString Then
  12.                             Dim rBtn As RadioButton = CType(c, RadioButton)
  13.                             If rBtn.Checked Then
  14.                                 Dim strScore As String = rBtn.InputAttributes("value")
  15.                                 score += CInt(strScore)
  16.                             End If
  17.                         End If
  18.                     Next
  19.                 Next
  20.             Next
  21.         End If
  22.  
  23.         Me.Label1.Text = score
  24.     End Sub
  25.  
Jul 7 '09 #1
12 24764
Frinavale
9,735 Recognized Expert Moderator Expert
Well there are a few things to keep in mind when you're using dynamic controls.

First of all you should consider the scope of the dynamic controls.

If you create a control in a function (like a button, table, radiobutton...) then the control only exists within that function.....it will be rendered on the page (because you added it to the placeholder) but when the request comes back to the server the controls declared in the function will no longer exist.

This means that dynamic controls have to have a scope for the whole page...you cannot simply declare them inside a method.

The other thing you have to consider is the ASP Page Life Cycle....

Please take a look this article about how to use dynamic controls in ASP.NET....


I don't think you need to use dynamic controls for your application.
You should be using a RadioButtonList instead of dynamically creating individual RadioButtons. You can assign a DataSource to the RadioButtonList. The RadioButtonList will automatically create the necessary RadioButtons for the DataSource that it's bound to.

This means that your RadioButtonList is not dynamic, but the datasource that it's bound to IS....so the content of the RadioButtonList is dynamic.

For example check out this article on how to bind a RadioButtonList to a Custom Object...if you're just using a DataBase then it's even easier :)



This will save you a lot of problems.
Jul 7 '09 #2
ive1122
2 New Member
Hi Frinavale.
Thank you for your reply.

Well, the outcome i want to get is as shown in the image below:


I don't think that it can be done (column by column) by using radio button list.

At first, i was using gridview to generate the survey. However, i was unable to do it using data source due to dynamic columns number. Besides, the header for the radio button is also generated dynamically. Therefore, i have no choice but to go for dynamic controls generation.

Do you have any idea or solution for this?

I very appreciated your help :)
Jul 7 '09 #3
Frinavale
9,735 Recognized Expert Moderator Expert
@ive1122
Ah I understand, you're right, you need to use dynamic controls.

I would recommend revisiting the GridView idea...or you could consider creating a templated control. For an example of a templated user control check out this post.

Check out the ITemplate interface, this article about Building Templated Custom ASP.NET Server Controls, this article on working with template fields....that should probably get you started.

If you have any questions let me know.

-Frinny
Jul 7 '09 #4
sharifee
9 New Member
In the GridView create the the template like this


<asp:TemplateField HeaderText="Assign">
<ItemTemplate>
<input ID="Radio1" type="radio" name="RdBtn" value='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>



Code Behind after post back. Get the value as below. you can get the value
of Radio button with name. bcz in same group the name is same for each.
and the following code will get the value of selected Radio Button

string selectedRadioButton = "";
selectedRadioButton = Request.Form["RdBtn"];
Jul 8 '09 #5
Gaigoi
4 New Member
Hi,
im working on similar project and wonder if you can help me. Can you post some sample code?
Sep 25 '09 #6
sharifee
9 New Member
i can help you and can post sample code, when you post your Question.
Sep 25 '09 #7
Gaigoi
4 New Member
Hi,

I need to populate the table to display as below. All the questions and answers is store in a oracle database.

Question | Answer 1 | Answer 2 | Answer 3 | Answer 4 | Answer 5

How do i format so it will display as above?

How do I loop through the radio button to find answer then insert it back to the database?

I tried to format the question by using Response.write() but when I click on submit answer it does not do anything and I could not use the FindControl to find the radio button in code behind.
Sep 25 '09 #8
sharifee
9 New Member
i think you have two tables one for questions and other for answers .
if this is the case use inner join and then convert it to pivot table. you will get the desired result for formatting.

and for the radio button. u can do it with javascript . implement onclick event on radio button. and store the clicked radio buttons value in hidden field and get the value from hidden field in code behind. and store it to database.
Sep 25 '09 #9
Gaigoi
4 New Member
Thank you you reply. Since the question and answer are dynamic create how do i know how many hidden field to create?
Sep 25 '09 #10
sharifee
9 New Member
create only one hidden field . if u know XML then it is very easy. just write XML tags to hidden field and you can access every value or attribute of the tag you have written to hidden field.
Sep 25 '09 #11
Gaigoi
4 New Member
Thank! Im using the placeholder to solved my question.
Sep 27 '09 #12
Frinavale
9,735 Recognized Expert Moderator Expert
I have no idea what your problem was, but typically you don't need to use a hidden field in order to determine the value of a radio button. A "place holder" in asp.net wouldn't really help you either since a placeholder is a container used to store server controls that are dynamically added to the Web page.

I'm assuming that you've solved your mysterious problem but I just wanted to make sure that whatever you've done isn't going to confuse someone else looking for help with retrieving the value of a dynamically created radio button.

Normally you would use the FindControl method to retrieve the dynamically created radio button (or any dynamically generated control). Once you have retrieved the dynamic control you can retrieve it's value.

-Frinny
Sep 28 '09 #13

Sign in to post your reply or Sign up for a free account.

Similar topics

4
4082
by: mitch-co2 | last post by:
What I am trying to do is when someone clicks on the YES radio button I want the text field called MYTEXT to equal the text field named DATE. The below code works as long as I do NOT UN-COMMENT...
5
17655
by: johnsuth | last post by:
I want to produce a trivial demonstration of dynamic modification. I thought that pressing a button might change its color. I studied O'Reillys books and successfully created the button with a...
5
2509
by: PCH | last post by:
I have an c# asp.net (.net 1.1) web page, viewstate on. The problem I am having is on the button click postback to update. Heres the situation: I have an asp table that has 1 header row. ...
2
1532
by: darrel | last post by:
I'm using some standard HTML radio buttons (to allow finer javascript interaction) on a web page and would like to catch the selected item on postback. Since they are all ID's uniquely, is there a...
8
3753
by: david | last post by:
I have developed a web form by using visual Studio. My question is: (1) what is the problem? (2) what is right way to do it? In the form, there are labels with id: lblWear, lblColor, and...
11
3110
by: saurabh | last post by:
Can anybody tell me how to change the value of an html control from the c#.... eg i hv one asp.net radio button control and one html hidden variable... so on page load in case the radio button is...
1
5445
by: Mufasa | last post by:
I have a couple of radio buttons that make various things appear/disappear on the screen through JavaScript. All works great. Problem is I'll click a radio button, something will appear, I reload...
4
1946
by: mcelary | last post by:
When the user clicks a radio button it creates a postback where I add a button control dynamically. My problem is I cannot get the dynamically added button to work with on an click event. The button...
13
10693
by: tommymo | last post by:
Hi everyone I'm new to this site and the world of ASP.Net C# programming. I have been learning controls and integrating them with a SQL database. So far I have been able to move along and understand...
0
7033
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7027
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7071
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
6861
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5318
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
4468
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
2987
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
2974
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
170
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.